package ch.zbw.swt.sysventory.ui;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.beans.PropertyChangeListener;

import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import ch.zbw.swt.sysventory.util.GuiHandler;
import ch.zbw.swt.sysventory.util.LoginInformation;

/*
 * GUI für das Login
 */

public class GUILogin extends JFrame{

	//Labels
	private JLabel passwortLabel;
	private JLabel benutzernameLabel;
	private JLabel titelAnmeldungLabel;
	
	//Textfelder
	private JPasswordField pwPassworfield;
	private JTextField benutzernamenTextfeld;
	
	//Buttons
	private JButton go2AnmeldenButton;

	//Listener
	private Action action;
	private KeyListener key;
	
	/**
	 * Konstruktor der GUI
	 */

	public GUILogin(Action action, KeyListener key) {
		this.action = action;
		this.key = key;
	}

	/**
	 * Initialisierung der GUI
	 */
	public void initialize() {
		
		//Eingeschaften der GUI
		this.getContentPane().setBackground(Color.WHITE);
		this.setBounds(100, 100, 450, 300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().setLayout(null);
		this.setResizable(false);

		//Einfügen von Elemente
		go2AnmeldenButton = new JButton("Anmelden");
		go2AnmeldenButton.setFont(new Font("Arial", Font.PLAIN, 12));
		go2AnmeldenButton.setBackground(Color.WHITE);
		go2AnmeldenButton.setBounds(152, 196, 128, 31);
		this.getContentPane().add(go2AnmeldenButton);
		
		pwPassworfield = new JPasswordField();
		pwPassworfield.setBounds(183, 129, 97, 31);
		this.getContentPane().add(pwPassworfield);
		
		passwortLabel = new JLabel("Passwort");
		passwortLabel.setFont(new Font("Arial", Font.PLAIN, 12));
		passwortLabel.setBounds(89, 129, 128, 31);
		this.getContentPane().add(passwortLabel);
		
		benutzernameLabel = new JLabel("Benutzername");
		benutzernameLabel.setFont(new Font("Arial", Font.PLAIN, 12));
		benutzernameLabel.setBounds(89, 94, 128, 31);
		this.getContentPane().add(benutzernameLabel);
		
		benutzernamenTextfeld = new JTextField();
		benutzernamenTextfeld.setFont(new Font("Arial", Font.PLAIN, 12));
		benutzernamenTextfeld.setBackground(Color.WHITE);
		benutzernamenTextfeld.setBounds(183, 94, 97, 31);
		this.getContentPane().add(benutzernamenTextfeld);
		benutzernamenTextfeld.setColumns(10);
		
		titelAnmeldungLabel = new JLabel("Anmeldung");
		titelAnmeldungLabel.setFont(new Font("Arial", Font.PLAIN, 26));
		titelAnmeldungLabel.setBounds(146, 11, 191, 44);
		this.getContentPane().add(titelAnmeldungLabel);
		
		go2AnmeldenButton.addActionListener(action);
		go2AnmeldenButton.setActionCommand("go2login");
		pwPassworfield.addKeyListener(key);
		
		//Einmittung und Darstellung
		//Anmerkung: musste am Schluss eingebunden werden, da sonst die
		//Felder nicht korrekt dargstellt werden
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		int top = (screenSize.height - this.getHeight()) / 2;
		int left = (screenSize.width - this.getWidth()) / 2;
		
		//weitere Eigenschaften
		this.setLocation(left, top);
		this.setVisible(true);
	}

	/*
	 * Ermittlung der Daten aus den Textfeldern für Passwortüberprüfung
	 */
	
	//Username
	public String getUser() {
		return benutzernamenTextfeld.getText();
		
	}

	//Passwort
	public String getPassword() {
		return pwPassworfield.getText();
	}

	/*
	 * Reset der GUI bei Falscheingabe durch User
	 */
	
	//Fokus auf Texfeld Username setzen
	public void setFokus(){
		benutzernamenTextfeld.requestFocus();
	}
	
	//Textfeld Username leeren
	public void setUsernameEmtpy() {
		this.benutzernamenTextfeld.setText("");
		
	}

	//Textfeld PW leeren
	public void setPWEmpty() {
		this.pwPassworfield.setText("");
		
	}
}
